package city.spring.configure;

import java.lang.annotation.*;

/**
 * 记录操作日志。
 * <p>用法： 在Controller方法接口上增加 @OperationLog("接口操作说明") @OperationLog(value = "接口操作说明", type = "系统日志") 注解</p>
 * <p>用法： 支持 SpEL 表达式
 * <ul>
 *     <li>@OperationLog("接口操作说明，方法名称：#{method.name}")</li>
 *     <li>@OperationLog("接口操作说明，方法参数：#{args[0].toString()}")</li>
 *     <li>@OperationLog("接口操作说明，方法参数：#{#id}") 其中的 id 为方法参数名称</li>
 *     <li>@OperationLog("接口操作说明，当前对象：#{target.toString()}")</li>
 *     <li>@OperationLog("接口操作说明，当前对象class：#{targetClass.getName()}")</li>
 *     <li>@OperationLog("接口操作说明，返回结果：#{result?.toString()?:'无返回值'}")</li>
 * </ul>
 *
 * </p>
 *
 * @author HouKunLin
 * @date 2020/8/11 0011 16:23
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface OperationLog {
    /**
     * 日志内容
     */
    String value() default "";

    /**
     * 操作类型（类型需要自行传入）
     */
    String type() default "";
}
